home *** CD-ROM | disk | FTP | other *** search
Wrap
package Local.Game.HUD { import Local.*; import Local.External.*; import Local.Game.*; import Local.Game.Level.*; import Local.Game.Thing.*; import Local.Game.World.*; import Local.Game.World.Map.*; import Local.Game.World.Map.Cell.*; import Local.Math.*; import STC9.IO.*; import STC9.System.*; import flash.display.*; import flash.events.*; import flash.filters.*; import flash.geom.*; import flash.text.*; public class CHUD extends Sprite { public static const SECONDS:int = CThingBase.SECONDS; internal var mGame:CGame; private var mProcessIcons:Array; private var _SelectedPanel:CHUDPanel; private var mcSelectedThing:MovieClip; private var mControlButtons:Object; internal var mThingSelected:*; private var mThingTargets:Object; private var mUpdateFunds:Boolean; private var mcHUD:MovieClip; private var tbFunds:TextField; private var mcHealth:MovieClip; private var mUpdateHealth:Boolean; private var _Health:Number; private var tbDescription:TextField; private var tbAddFunds:TextField; private var prevSelectedPanel:CHUDPanel; internal var mPanels:Object; public var mFundsSecure:CSecureNumber; public var mPlayState:String; private var tbSubHealth:TextField; private var mFundsChange:Number; private var mMaxHealth:Number; public var _Description_Default:String = "NO MESSAGE"; public function CHUD(param1:CGame) { if(true) { _Description_Default = "NO MESSAGE"; if(true) { super(); mGame = param1; } addEventListener(Event.ADDED_TO_STAGE,Initialize); } } public static function NumberToDollar(param1:Number) : String { var _loc2_:String = null; var _loc3_:String = null; var _loc4_:String = null; var _loc5_:* = 0; var _loc6_:* = 0; _loc2_ = String(Math.floor(param1)); _loc3_ = "###,###,###,###,###,###"; _loc4_ = ""; §§push(_loc2_.length - 1); if(true) { §§push(§§pop()); if(true) { _loc5_ = §§pop(); addr52: §§push(_loc3_.length - 1); } _loc6_ = §§pop(); while(_loc5_ >= 0) { if(_loc3_.charAt(_loc6_) == "#") { if(false) { break; } §§push(_loc2_); §§push(_loc5_); §§push(_loc5_); if(true) { §§push(§§pop() - 1); } _loc5_ = §§pop(); §§push(§§pop().charAt(§§pop())); } else { §§push(","); } _loc4_ = §§pop() + _loc4_; if(true) { _loc6_--; } } return "$" + _loc4_; } §§goto(addr52); } public static function NumberToScore(param1:Number) : String { var _loc2_:String = null; if(true) { _loc2_ = String(Math.floor(param1)); } while(true) { if(_loc2_.length >= 12) { §§push("SCORE: " + _loc2_); break; } §§push("0" + _loc2_); if(false) { break; } _loc2_ = §§pop(); } return §§pop(); } private function ALPHA_Start(param1:DisplayObject) : void { if(true) { param1.alpha = 3; GLOW_Start(param1); } } public function Dispose() : void { } private function AddPanel(param1:MovieClip, param2:MovieClip, param3:Function, param4:Function = null, param5:Function = null, param6:Boolean = false) : CHUDPanel { var _loc7_:CHUDPanel = null; _loc7_ = new CHUDPanel(this,param2,param1,param6); mPanels[_loc7_.mID] = _loc7_; if(param5 != null) { _loc7_.addEventListener(CHUDPanel.DRAWPANEL,param5); } if(param4 != null) { _loc7_.addEventListener(CHUDPanel.SELECTED,param4); } param3(_loc7_); return _loc7_; } private function Compile(param1:MovieClip) : void { var _loc2_:CHUDPanelMap = null; var _loc3_:CHUDPanelUnit = null; var _loc4_:CHUDData = null; addChild(mcHUD = param1); mcHUD.mcSize.visible = false; mcHUD.removeChild(mcHUD.mcSize); CHUDPanel.SetDefaults(mcHUD); tbFunds = mcHUD.tbFunds; mcHealth = mcHUD.mcHealth; tbSubHealth = mcHUD.tbSubHealth; tbAddFunds = mcHUD.tbAddFunds; tbSubHealth.alpha = 0; tbAddFunds.alpha = 0; tbDescription = mcHUD.tbDescription; tbDescription.text = ""; mPanels = new Object(); _loc2_ = new CHUDPanelMap(this); _loc3_ = new CHUDPanelUnit(this); _loc4_ = new CHUDData(this); if(true) { AddPanel(mcHUD.mcTabUnits,mcHUD.mcPanelUnits,_loc4_.InitPanel_Units,e_PANEL_SELECTED); if(true) { AddPanel(mcHUD.mcTabStrikes,mcHUD.mcPanelStrikes,_loc4_.InitPanel_Strikes,e_PANEL_SELECTED); if(true) { AddPanel(mcHUD.mcTabMap,mcHUD.mcPanelMap,_loc4_.InitPanel_Map,e_PANEL_SELECTED,_loc2_.e_DRAW,true); if(true) { AddPanel(mcHUD.mcTabUpgrades,mcHUD.mcPanelUpgrades,_loc4_.InitPanel_Upgrades,e_PANEL_SELECTED); if(true) { AddPanel(null,mcHUD.mcPanelUnit,_loc4_.InitPanel_Unit,e_PANELUNIT_SELECTED,_loc3_.e_DRAW); if(true) { new CHUDTooltip(this,mcHUD.mcTabUnits,"Click on this to activate the units panel. Here you can build new units."); if(true) { new CHUDTooltip(this,mcHUD.mcTabStrikes,"Click on this to activate the strikes panel. Here you can call & launch new strikes."); if(true) { new CHUDTooltip(this,mcHUD.mcTabUpgrades,"Click on this to activate the upgrades panel. Here you can upgrade your arsenal, bringing new tools to the fight."); if(true) { new CHUDTooltip(this,mcHUD.bGetHelp,"Click to open the help pages. Here you will find more details of the game."); mcHUD.bGetHelp.addEventListener(MouseEvent.MOUSE_UP,e_OPEN_HELP); } GetPanel("map").Activate(); } GetPanel("units").Activate(); } mcHUD.mcBG.opaqueBackground = 16711935; } mcHUD.mcBG.cacheAsBitmap = true; } new CHUDTooltip(this,mcHUD.mcTTLevel,"This is the current level status, the level number or the next level number and time to next.",false); } new CHUDTooltip(this,mcHUD.mcTTHealth,"This is the health of your current mission. When an enemy unit reaches your side health is removed.",false); } new CHUDTooltip(this,mcHUD.mcTTFunds,"This is the total amount of funds you have to build, upgrade and launch strikes.",false); } y = CMain.mSize.height - mcHUD.mcSize.height; } } public function get mLevel() : CLevel { return mGame.mWorld.mLevel; } public function get mLowHealth() : Boolean { return mHealth / mMaxHealth <= 0.15; } public function DeselectThing() : void { if(true) { if(mThingSelected) { if(true) { mThingSelected.mMouseSelected = false; addr25: mThingSelected = null; } mcSelectedThing.visible = false; §§goto(addr31); } §§goto(addr25); } addr31: } public function Control_Play() : void { SelectControlButton(mcHUD.mcControl.bPlay); } private function e_ACTION_SELECTFRIEND(param1:Event = null) : void { if(true) { SelectThing(mMouse.mOverThing); } } private function GLOW_Start(param1:DisplayObject) : void { param1.filters = [new GlowFilter(16777215,1,2,2,4)]; } private function GetControlButtonID(param1:String) : Object { return mControlButtons[param1]; } public function get mMouse() : CMouse { return mGame.mWorld.mMouse; } public function get mStrikesReady() : Boolean { return GetPanel("strikes").mStrikesReady; } public function get mBuilding() : Boolean { if(true) { return GetPanel("units").mBuilding || GetPanel("strikes").mBuilding || GetPanel("upgrades").mBuilding; } §§goto(addr34); } public function get mWorld() : CWorld { return mGame.mWorld; } private function ALPHA_Process(param1:DisplayObject) : void { if(true) { if(param1.alpha > 0) { if(true) { if((param1.alpha = param1.alpha - 0.03) < 0) { param1.alpha = 0; } } } GLOW_Process(param1); } } public function get mDescription() : String { return tbDescription.text; } public function set mHealth(param1:Number) : void { var _loc2_:Number = NaN; _loc2_ = Math.floor(param1 - _Health); tbSubHealth.text = Math.floor(_loc2_ / mMaxHealth * 100) + "%"; _Health = Math.max(0,param1); mUpdateHealth = true; mcHealth.gotoAndStop(Math.ceil(mcHealth.totalFrames * mHealth / mMaxHealth) + 1); } public function Draw() : void { var _loc1_:Point = null; var _loc2_:Object = null; mPanels["map"].Draw(); mSelectedPanel.Draw(); if(mThingSelected) { if(mThingSelected.mDisposed) { DeselectThing(); return; } _loc1_ = mThingSelected.mCollide.mMid.subtract(mLandscape.mDrawPosition); if(true) { mcSelectedThing.x = _loc1_.x; mcSelectedThing.y = _loc1_.y - y; } } for each(_loc2_ in mThingTargets) { §§push(Boolean(_loc2_.selectedThing.mDead)); if(true) { §§push(§§pop() || Boolean(_loc2_.killThing.mDisposed)); } if(§§pop()) { RemoveTarget(_loc2_.selectedThing); } else { _loc1_ = _loc2_.selectedThing.mCollide.mMid.subtract(mLandscape.mDrawPosition); _loc2_.mc.x = _loc1_.x; _loc2_.mc.y = _loc1_.y - y; } } } private function e_BUTTON_UP(param1:MouseEvent = null) : void { SelectControlButton(SimpleButton(param1.currentTarget)); } public function ResetDescription() : void { mDescription = _Description_Default; } private function GetControlButton(param1:SimpleButton) : Object { var _loc2_:Object = null; for each(_loc2_ in mControlButtons) { if(_loc2_.mButton == param1) { return param1; } } return null; } public function GetPanel(param1:String) : CHUDPanel { return mPanels[param1]; } public function RemoveTarget(param1:CThingMain) : void { if(true) { removeChild(mThingTargets[param1.mID].mc); delete mThingTargets[param1.mID]; } } public function Process() : void { var _loc1_:CHUDPanel = null; for each(_loc1_ in mPanels) { if(true) { _loc1_.ProcessIcons(); } } if(true) { if(mUpdateFunds) { if(true) { tbFunds.text = NumberToDollar(mFunds); if(true) { tbAddFunds.text = (mFundsChange < 0 ? "-" : "+") + NumberToDollar(Math.abs(mFundsChange)); if(true) { mUpdateFunds = false; if(true) { GLOW_Start(tbFunds); if(true) { ALPHA_Start(tbAddFunds); if(true) { addr99: if(mUpdateHealth) { addr101: mUpdateHealth = false; } else { GLOW_Process(mcHealth); addr114: ALPHA_Process(tbSubHealth); addr117: if(mLowHealth) { mcHealth.alpha = Math.abs((4 - mGame.mTick % 9) / 4); addr138: return; addr119: } §§goto(addr138); } §§goto(addr117); } GLOW_Start(mcHealth); } ALPHA_Start(tbSubHealth); } §§goto(addr117); } } §§goto(addr114); } §§goto(addr119); } else { GLOW_Process(tbFunds); if(true) { ALPHA_Process(tbAddFunds); if(true) { mFundsChange = 0; } §§goto(addr99); } } §§goto(addr101); } §§goto(addr138); } public function DeselectAll(param1:Boolean = true, param2:Boolean = true) : void { var _loc3_:CHUDPanel = null; if(true) { if(param2) { DeselectThing(); } } for each(_loc3_ in mPanels) { _loc3_.DeselectAll(); } if(true) { §§push(param1); if(true) { §§push(§§pop()); if(true) { if(§§pop()) { } §§goto(addr60); } §§pop(); if(true) { §§push(prevSelectedPanel); if(true) { addr60: if(§§pop()) { addr69: prevSelectedPanel.Activate(); } addr70: mMouse.ClearFilter(); return; §§push(§§pop()); } §§goto(addr69); } §§goto(addr70); } } §§goto(addr60); } public function AddTarget(param1:CThingMain, param2:CThingMain) : void { if(true) { mThingTargets[param1.mID] = { "selectedThing":param1, "killThing":param2, "mc":new Unit_Targetted() }; addChild(mThingTargets[param1.mID].mc); } } public function SelectThing(param1:*) : void { if(true) { DeselectThing(); if(true) { mThingSelected = param1; if(true) { mThingSelected.mMouseSelected = true; } mPanels["unit"].Activate(); } mcSelectedThing.visible = true; } } public function set mSelectedPanel(param1:CHUDPanel) : void { if(true) { _SelectedPanel = param1; } } private function GLOW_Process(param1:DisplayObject) : void { var _loc2_:GlowFilter = null; if(param1.filters.length) { _loc2_ = param1.filters[0]; if(true) { param1.filters = (_loc2_.strength = _loc2_.strength * 0.7) < 0.25 ? [] : [_loc2_]; } } } private function SelectControlButton(param1:SimpleButton) : void { var _loc2_:Object = null; for each(_loc2_ in mControlButtons) { if(true) { if(_loc2_.mButton == param1) { if(true) { _loc2_.mButton.enabled = false; if(true) { _loc2_.mButton.transform.colorTransform = mcHUD.mcControl.mSelectedCT; mPlayState = _loc2_.mState; } continue; } } else { _loc2_.mButton.enabled = true; } _loc2_.mButton.transform.colorTransform = mcHUD.mcControl.mDefaultCT; } } } private function e_PANELUNIT_SELECTED(param1:Event = null) : void { if(true) { DeselectAll(false,false); if(true) { if(mSelectedPanel.mID != "unit") { prevSelectedPanel = mSelectedPanel; } } mSelectedPanel = CHUDPanel(param1.currentTarget); } } public function get mHealth() : Number { return _Health; } public function get mMap() : CMap { return mGame.mWorld.mMap; } public function SetStageInfo(param1:int, param2:int = 0, param3:Number = 0) : void { param1++; mcHUD.tbLevelInfo.text = !!param3 ? (param1 == 100 ? "GAME COMPLETE" : "STAGE " + (param1 + 1) + " in " + String(Math.floor(param3 / 25)) + " seconds") : "STAGE " + param1; } public function Initialize(param1:Event = null) : void { removeEventListener(Event.ADDED_TO_STAGE,Initialize); addChild(mcSelectedThing = new Unit_Selected()); mThingTargets = new Object(); Compile(new HUD()); mFundsSecure = new CSecureNumber(); mFunds = CLevelData.mStartFunds + Math.random(); mMaxHealth = 200 + Math.random(); mHealth = mMaxHealth; mUpdateHealth = false; mUpdateFunds = false; tbFunds.text = NumberToDollar(mFunds); mMouse.addEventListener(CMouse.ACTION_SELECTFRIEND,e_ACTION_SELECTFRIEND); ResetDescription(); SetupControl(); } public function set mFunds(param1:Number) : void { mFundsChange += Math.floor(param1 - mFundsSecure.mValue); mFundsSecure.mValue = param1; mUpdateFunds = true; } private function e_PANEL_SELECTED(param1:Event = null) : void { if(true) { DeselectAll(false); mSelectedPanel = CHUDPanel(param1.currentTarget); } } public function get mLandscape() : CLandscape { return mGame.mWorld.mLandscape; } public function get mSelectedPanel() : CHUDPanel { return _SelectedPanel; } public function e_PANELUNIT_DRAW(param1:Event = null) : void { } public function SetupControl() : void { if(true) { mControlButtons = new Object(); if(true) { mcHUD.mcControl.mSelectedCT = mcHUD.mcControl.bFast.transform.colorTransform; if(true) { mcHUD.mcControl.mDefaultCT = mcHUD.mcControl.bPause.transform.colorTransform; if(true) { AddControlButton(mcHUD.mcControl.bPause,"pause","Click to pause the game. Here you will find statistics on your play."); } AddControlButton(mcHUD.mcControl.bPlay,"play","Click to play the game at normal speed."); } AddControlButton(mcHUD.mcControl.bFast,"fast","Click to play the game at 10 x the normal speed."); } Control_Play(); } } public function set mDescription(param1:String) : void { tbDescription.text = param1; } public function Resize(param1:int, param2:int) : void { } private function e_OPEN_HELP(param1:MouseEvent = null) : void { CURL.GameGuide(); } public function get mFunds() : Number { return mFundsSecure.mValue; } private function AddControlButton(param1:SimpleButton, param2:String, param3:String) : void { if(true) { param1.addEventListener(MouseEvent.MOUSE_UP,e_BUTTON_UP); mControlButtons[param2] = { "mButton":param1, "mState":param2, "mTooltip":new CHUDTooltip(this,param1,param3) }; } } } }